neovimのテンプレート管理にはmattn/vim-sonictemplateを使ってみよう
同じフォーマットの文書を編集する時には予めテンプレート化しておくと便利です。vimにおいてもテンプレート機能をもつプラグインは数ありますが、今回は様々な種類別のテンプレートを用意できる mattn/vim-sonictemplate
を紹介してみます。
プラグインについて
初期から幾つもの言語用テンプレートが用意されています。また、テンプレート内にシェルコマンドも併用可能で、日付等の都度異なる値を自動入力も可能です。
インストールする
今回はlazy.tomlへの記載で行います。
vim ~/.config/nvim/lazy.toml
[[plugins]] repo = 'mattn/vim-sonictemplate'
テンプレートを呼び出す
テンプレートは編集中のファイル拡張子に連動しています。例えば markdown
用のテンプレートを開きたい場合には
vim edit.md
のように予めmarkdownファイルを編集している状態にしておく必要があります。指定するファイル名が実際には存在していなくても問題ありません。
また、テンプレート内で特定のコマンドが記載されていると、テンプレートを指定したタイミングで以下のような入力受付が開始されます。
テンプレートを追加する
テンプレート設置先は設定次第ですが、以下はdeinで管理している際の一例となります。
% ls ~/.vim/dein/repos/github.com/mattn/vim-sonictemplate/template/ _ clojure d go java kotlin perl ruby vim bzl cmake dockerfile groovy javascript latex perl6 rust zig c cpp elixer help json make php scala changelog cs erlang html jsx markdown python typescript
該当言語のディレクトリ内に該当言語の拡張子つきでファイルを追加します。必要に応じて以下のスニペットを使うと便利になります。
用途 | 記法 |
---|---|
テンプレート選択時に入力を強制させる | {{_input_:title}} |
テンプレート選択後のカーソル初期位置を指定させる | {{_cursor_}} |
テンプレート内でコマンドを展開させる | {{_expr_:}} |
あとがき
vimで編集する文書フォーマットは事ある毎に手書きでやっていましたが、他のエディタでやっているようにテンプレート化すればいいのではないかと思い、検索して試してみました。_expr_
記法でのコマンド指定や、_input_
記法での入力受付は中々便利なので、毎回手間だと感じていた場合には試してみるのをおすすめします。